package org.qqcui.designpattern.patterns.singleton.hungry;

/**
 * 单例模式，饿汉式写法第二种方式
 * 可以使用，但是可能会造成内存的浪费，因为没有实现懒加载的效果
 *
 * @author cuiqingqiang
 * @version 1.0
 * @date 2020-10-16 21:23
 **/
public class SingletonTest02 {

	public static void main(String[] args) {
		System.out.println("饿汉式写法二，静态代码块中初始化静态成员变量方式");
		Singleton2 instance1 = Singleton2.getInstance();
		Singleton2 instance2 = Singleton2.getInstance();
		System.out.println(instance1 == instance2); // true

		System.out.println("instance1.hashCode=" + instance1.hashCode());
		System.out.println("instance2.hashCode=" + instance2.hashCode());
	}
}

/**
 * 饿汉式写法一
 * 1.提供一个私有化的构造器，防止通过new的方式来创建实例对象
 * 2.定义一个成员变量
 * 3.在静态代码块中对成员变量进行初始化
 * 4.提供给外部一个可以获取实例的公共方法
 */
class Singleton2 {

	private Singleton2() {

	}

	private static Singleton2 INSTANCE;

	static {
		INSTANCE = new Singleton2();
	}

	public static Singleton2 getInstance() {
		return INSTANCE;
	}
}
